﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BussinessLogicTecnoPez.Produccion.FaenamientoEnvasado;
using BussinessLogicTecnoPez;
using Tecnopez.Globals;
using Microsoft.Practices.EnterpriseLibrary.Validation;

public partial class Modules_FaenamientoEnvasado_ABMEquipos : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack == false)
        {
            SetMode(PageMode.ListMode);
        }

        InicializarValidadores();
        InicializarGrilla();

        cmdEliminar.OnClientClick = "return confirm('Esta seguro de eliminar el registro?');";

        GenericMasterPage master = (GenericMasterPage)this.Master;
        master.Imagen = "../Styles/Icons/tools.png";
        master.Titulo = "Gestión de Equipos";
        cargarGrilla();
        _lblError.Text = "";
    }

    private void InicializarValidadores()
    {
        PPVNombre.SourceTypeName = "BussinessLogicTecnoPez.Produccion.FaenamientoEnvasado.Equipo";
        PPVNombre.ControlToValidate = "txtDescripcion";
        PPVNombre.PropertyName = "Descripcion";
        PPVNombre.DisplayMode = ValidationSummaryDisplayMode.List;
    }
    private void InicializarGrilla()
    {
        grdEquipos.setupGrid(typeof(Equipo), cargarGrilla, true, true, this.ViewState);
    }

    //private void seleccionarEquipo(int o)
    //{
    //    int IdProducto = int.Parse(grdProductos.grdDatosAbmView.DataKeys[o].Value.ToString());
    //    Producto.getManager.ClearFilters();
    //    Producto.getManager.AddFilter("IDPRODUCTO", GenericManager<Producto>.filterOperator.Equals, IdProducto);
    //    Producto objProducto = Producto.getManager.GetOne();
    //    txtId.Text = objProducto.IdProducto.ToString();
    //    txtCodigo.Text = objProducto.Codigo.Trim();
    //    txtNombre.Text = objProducto.Nombre.Trim();
    //    txtDescripcion.Text = objProducto.Descripcion.Trim();
    //    txtPrecioMayorista.Text = objProducto.PrecioMayorista.ToString();
    //    txtPrecioMinorista.Text = objProducto.PrecioMinorista.ToString();

    //    SetMode(PageMode.ViewMode);
    //}

    private void SetMode(PageMode mode)
    {
        ViewState["PageMode"] = mode;
        switch (mode)
        {
            case PageMode.ListMode:
                mvABM.ActiveViewIndex = 0;
                break;
            case PageMode.NewMode:
                mvABM.ActiveViewIndex = 1;
                txtCodigo.ReadOnly = true;
                txtDescripcion.ReadOnly = false;
                txtFuncion.ReadOnly = false;
                cmdAceptar.Visible = true;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = false;
                cmdEliminar.Enabled = false;
                break;
            case PageMode.EditMode:
                mvABM.ActiveViewIndex = 1;
                txtCodigo.ReadOnly = true;
                txtDescripcion.ReadOnly = false;
                txtFuncion.ReadOnly = false;
                cmdAceptar.Visible = true;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = false;
                cmdEliminar.Enabled = false;
                break;
            case PageMode.ViewMode:
                mvABM.ActiveViewIndex = 1;
                txtCodigo.ReadOnly = true;
                txtDescripcion.ReadOnly = true;
                txtFuncion.ReadOnly = true;
                cmdAceptar.Visible = false;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = true;
                cmdEliminar.Enabled = true;
                break;
        }

    }

    private void cargarGrilla()
    {
        Equipo.getManager.ClearFilters();
        Equipo.getManager.ClearOrders();
        Equipo.getManager.AddFilter("IDEquipo", GenericManager<Equipo>.filterOperator.Like, "%" + txtBuscarCodigo.Text.Trim() + "%");
        Equipo.getManager.AddFilter("Descripcion", GenericManager<Equipo>.filterOperator.Like, "%" + txtBuscarDescripcion.Text.Trim() + "%");

        if (ViewState[grdEquipos.PageDataViewOrderKey] == null)
        {
            Equipo.getManager.AddOrder("IdEquipo", GenericManager<Equipo>.Order.orderDirection.DESC);
        }
        else
        {
            Equipo.getManager.AddOrder(ViewState[grdEquipos.PageDataViewOrderKey].ToString(), (GenericManager<Equipo>.Order.orderDirection)ViewState[grdEquipos.PageDataViewOrdenDireccionKey]);
        }

        List<Equipo> lista = new List<Equipo>();
        lista = Equipo.getManager.GetFilter();
        grdEquipos.DataSource = lista;
        grdEquipos.DataBind();

    }
    protected void cmdNuevo_Click(object sender, EventArgs e)
    {
        SetMode(PageMode.NewMode);
        txtCodigo.Text = "";
        txtDescripcion.Text = "";
        txtFuncion.Text = "";
    }
    protected void cmdEditar_Click(object sender, EventArgs e)
    {
        SetMode(PageMode.EditMode);
    }
    protected void cmdEliminar_Click(object sender, EventArgs e)
    {
        try
        {
            Equipo objEquipo = new Equipo();
            objEquipo.IdEquipo = int.Parse(this.txtCodigo.Text.Trim());
            if (Equipo.getManager.Delete(objEquipo) < 1)
            {
                throw Equipo.getManager.GeneratedException;
            }

            SetMode(PageMode.ListMode);
            cargarGrilla();
        }
        catch (Exception ex)
        {
            _lblError.Text = ex.Message;
        }      
    }
    protected void cmdAceptar_Click(object sender, EventArgs e)
    {
        try
        {
            Equipo objEquipo = new Equipo();

            objEquipo.Funcion = txtFuncion.Text.Trim();
            objEquipo.Descripcion = txtDescripcion.Text.Trim();

            if (validar(objEquipo))
            {
                if (getMode() == PageMode.NewMode)
                {
                    if (Equipo.getManager.Insert(objEquipo) != true)
                    {
                        throw Equipo.getManager.GeneratedException;
                    }
                    SetMode(PageMode.ListMode);
                    cargarGrilla();
                }
                else
                {
                    objEquipo.IdEquipo = int.Parse(txtCodigo.Text.Trim());
                    if (Equipo.getManager.Update(objEquipo) != true)
                    {
                        throw Equipo.getManager.GeneratedException;
                    }
                    SetMode(PageMode.ViewMode);
                }
            }
        }
        catch (Exception exc)
        {
            _lblError.Text = "error: No se pudo realizar la operación";
            Functions.LogError(exc);
        }
    }
    private bool validar(Equipo objeto)
    {
        ValidationResults v = Validation.Validate<Equipo>(objeto);
        if (!v.IsValid)
        {
            _lblError.Text = "Error en el formulario: Por favor verifique los campos ingresados.";
        }
        return v.IsValid;
    }
    private PageMode getMode()
    {
        if (ViewState["PageMode"] == null)
            return PageMode.ModeNotFound;
        return (PageMode)ViewState["PageMode"];
    }
    protected void cmdCancelar_Click(object sender, EventArgs e)
    {
        SetMode(PageMode.ListMode);
    }
    protected void grdEquipos_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "ver")
        {
            int IdEquipo = int.Parse(grdEquipos.DataKeys[System.Convert.ToInt32(e.CommandArgument)].Value.ToString());
            Equipo.getManager.ClearFilters();
            Equipo.getManager.AddFilter("IDEQUIPO", GenericManager<Equipo>.filterOperator.Equals, IdEquipo);
            Equipo objEquipo = Equipo.getManager.GetOne();
            txtCodigo.Text = objEquipo.IdEquipo.ToString();
            txtDescripcion.Text = objEquipo.Descripcion.Trim();
            txtFuncion.Text = objEquipo.Funcion.Trim();

            SetMode(PageMode.ViewMode);
        }
    }
}
